package com.zhangtai.modules.entity.employee;

import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.zhangtai.config.LongJsonDeserializer;
import com.zhangtai.config.LongJsonSerializer;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;

/**
 * @author chenshun
 * @email sunlightcs@gmail.com
 * @date 2020-06-22 22:05:14
 */
@Data
@TableName("tb_employee_info")
public class EmployeeInfoEntity implements Serializable {
    private static final long serialVersionUID = 1L;

    /**
     * 编号
     */
    @TableId
    @JsonDeserialize(using = LongJsonDeserializer.class)
    @JsonSerialize(using = LongJsonSerializer.class)
    private Long oid;


    /**
     * 招聘数据表id
     */
    @JsonDeserialize(using = LongJsonDeserializer.class)
    @JsonSerialize(using = LongJsonSerializer.class)
    private Long recruitmentId;


    /**
     * 负责人
     */
    private String principal;
    /**
     * 负责人工号
     */
    private String principalUserCode;

    /**
     * 姓名
     */
    private String name;
    /**
     * 性别
     */
    private String gender;
    /**
     * 身份证号
     */
    private String idcard;

    /**
     * 工号
     */
    private String code;
    /**
     * 民族
     */
    private String nation;
    /**
     * 籍贯省
     */
    private String nativeplaceProvince;
    /**
     * 籍贯
     */
    private String nativeplace;
    /**
     * 国籍
     */
    private String nationality;
    /**
     * 手机
     */
    private String mobile;
    /**
     * 政治面貌
     */
    private String polity;
    /**
     * 户口所在地
     */
    private String regresidence;
    /**
     * 家庭地址
     */
    private String address;
    /**
     * 个人电子邮件
     */
    private String privatemail;
    /**
     * 健康状态
     */
    private String healthstatus;
    /**
     * 是否退伍兵
     */
    private String disbandment;
    /**
     * 婚姻状况
     */
    private String marital;
    /**
     * 参加工作日期
     */
    private Date beginworkdate;
    /**
     * 生日
     */
    private Date birthday;
    /**
     * 操作时间
     */
    private Date operatetime;
    /**
     * 0:正常,1:删除
     */
    private Integer isDelete;
    /**
     * 0:社招，1：实习生
     */
    private String socialTrainee;
    /**
     * 联系方式
     */
    private String contact;
    /**
     * 拟录用部门
     */
    private String unitname;
    /**
     * 部门id
     */
    @JsonDeserialize(using = LongJsonDeserializer.class)
    @JsonSerialize(using = LongJsonSerializer.class)
    private Long unitId;
    /**
     * * 拟录用公司
     */
    private String orgname;
    /**
     * 公司id
     */
    @JsonDeserialize(using = LongJsonDeserializer.class)
    @JsonSerialize(using = LongJsonSerializer.class)
    private Long orgId;
    /**
     * 拟录用岗位
     */
    private String jobname;
    /**
     * 职位id
     */
    @JsonDeserialize(using = LongJsonDeserializer.class)
    @JsonSerialize(using = LongJsonSerializer.class)
    private Long jobId;

    /**
     * 职级id
     */
    @JsonDeserialize(using = LongJsonDeserializer.class)
    @JsonSerialize(using = LongJsonSerializer.class)
    private Long jobLevelId;
    /**
     * 职级
     */
    private String jobLevel;

    @ApiModelProperty(value = "职级类别,1:专业职级，2：管理职级", required = false)
    private Integer jobLevelType;
    /**
     * 预计入职时间
     */
    private Date hiredate;
    /**
     * 管理职级Id
     */
    @JsonDeserialize(using = LongJsonDeserializer.class)
    @JsonSerialize(using = LongJsonSerializer.class)
    private Long managementJoblevelId;

    /**
     * 管理职级
     */
    private String managementJoblevel;

    /**
     * 专业职级Id
     */
    @JsonDeserialize(using = LongJsonDeserializer.class)
    @JsonSerialize(using = LongJsonSerializer.class)
    private Long professionJoblevelId;

    /**
     * 专业职级
     */
    private String professionJoblevel;

    /**
     * 试用期
     */
    private Integer probationday;

    /**
     * 转正日期
     */
    private Date regularDay;
    /**
     * 月薪
     */
    private BigDecimal monthlySalary;
    /**
     * 模块绩效
     */
    private BigDecimal performance;

    @ApiModelProperty(value="转正基本工资",required = false)
    private BigDecimal  basicSalary;
    /**
     * 二维码
     */
    private String qrcodeUrl;
    /**
     * 员工录用状态：0:新建 ，1：填写完已保存 2：bpm审批中，3：审批完成,4:流程作废，5：offer已发送，6：流程被驳回
     */
    private Integer status;
    /**
     * 0:未提交，1：提交
     */
    private Integer preSubmit;
    /**
     * 招聘渠道
     */
    private String channel;
    /**
     * 招聘网站
     */
    private String recruitmentWeb;
    /**
     * 推荐人-内部
     */
    private String innerReferrer;
    /**
     * 推荐人-外部
     */
    private String outerReferrer;

    private String record;

    private String flowId;

    private String token;


    private String line;

    private String jobSystem;

    @JsonDeserialize(using = LongJsonDeserializer.class)
    @JsonSerialize(using = LongJsonSerializer.class)
    private Long jobSystemId;

    @JsonDeserialize(using = LongJsonDeserializer.class)
    @JsonSerialize(using = LongJsonSerializer.class)
    private Long lineId;


    @ApiModelProperty(value = "是否公司负责人，null：不是，1：是", required = false)
    private String iscentreprincipal;

    @ApiModelProperty(value = "是否部门负责人，null：不是，1：是", required = false)
    private String isdepartmentprincipa;


    /**
     * 是否分配了薪资组 薪资组分配情况，0:未分配，1：已分配
     */
    private Integer isDistribute;

    /**
     * 薪资组id
     */
    @JsonDeserialize(using = LongJsonDeserializer.class)
    @JsonSerialize(using = LongJsonSerializer.class)
    private Long salaryGroupId;

    /**
     * 薪带宽款监控是否删除，0：正常，1：删除
     */
    private Integer salaryBandMonitoringIsDelete;


    private Integer flowType;


    /**
     * 0:新员工，1：复职员工，离职未满一年，2：旧员工，3：离职超过一年
     */
    private Integer isReinstate;

    /**
     * 转正操作 0:未转正，1：转正 ，2：延期转正 3：不予转正，4：提前转正
     */
    private Integer isRegular;

    /**
     * 0:转正 未处理，1：已处理
     */
    private Integer regularIsDone;


    /**
     * 员工状态
     */
    @ApiModelProperty(value = "员工状态，2：在职，9：实习，3,4,5,6：离职", required = false)
    private String employeestatus;


    /**
     * 离职日期
     */
    private Date dimissionTime;

    @ApiModelProperty(value = "工作地点", required = false)
    private String workAddress;

    /**
     * 是否已发送offer,0:未发送，1：已发送
     */
    private Integer isOffer;

    /**
     * 用工类型
     */
    @ApiModelProperty(value = "用工类型", required = false)
    private String jobType;

    /**
     * 合同类型，0：聘用合同，1：劳动合同
     */
    private String contractType;


    /**
     * 合同期限类型，1：固定期限，2：无固定期限 ，3：完成一定工作期限，4：5至10年(含10年)，5：无固定期限，6：完成一定工作期限，7：其他
     */
    private String contractTimeType;

    /**
     * 劳动合同期限
     */
    private Integer laborContractYears;


    /**
     * 甲方主体id
     */
    @JsonDeserialize(using = LongJsonDeserializer.class)
    @JsonSerialize(using = LongJsonSerializer.class)
    private Long employerCompanyId;

    /**
     * 甲方主体
     */
    private String employerCompany;

    /**
     * 合同生效日期
     */
    private Date contractBeginDate;
    /**
     * 合同截止日期
     */
    private Date contractEndDate;

    /**
     * 合同签订日期
     */
    private Date signDate;

    /**
     * 合同签订人
     */
    private String signNer;

    /**
     * 在公司的亲属姓名
     */
    private String relativeName;
    /**
     * 亲属身份证
     */
    private String relativeIdCard;

    /**
     * 亲属关系
     */
    private String relationship;

    /**
     * 亲属所在单位
     */
    private String relativeUnit;

    private Date createTime;

    private Date updateTime;

    /**
     * 备注
     */
    private String remark;

    /**
     * 处理状态 0、SSC处理中 1、评分审核中 2、薪酬核定中 3、员工发起中 4、BPM审批中 5、已办结
     */
    @ApiModelProperty(value = "处理状态 0、SSC处理中 1、评分审核中 2、薪酬核定中 3、员工发起中 4、BPM审批中 5、已办结", required = false)
    private Integer dealStatus;

    /**
     * 薪资备注
     */
    @ApiModelProperty(value = "薪资备注", required = false)
    private String salaryRemark;

    /**
     * 是否推送了员工录用通知
     */
    private Integer isHireNotice;
    /**
     * 用户是否填写
     */
    private Integer isMemberDone;
    /**
     * 是否确认入职，0：未确认，1：已确认
     */
    private Integer isHireDone;

    /**
     * 入职状态：0.未处理，1.已处理
     */
    private Integer isEntryStatus;

    /**
     * 合同状态，0：合同未发送，1：合同已发送，2合同已签署
     */
    private Integer isSendContract;

    /**
     * 合同流程id
     */
    private Integer esignFlowId;

//	public static void main(String[] args) {
//		String format = String.format("%05d", 1);
//		System.out.println(format);
//	}

    /**
     * 插入时间
     */
    private Date insetDate;

    /**
     * 员工编号
     */
    @JsonDeserialize(using = LongJsonDeserializer.class)
    @JsonSerialize(using = LongJsonSerializer.class)
    private Long employeeOid;

    @ApiModelProperty(value = "退伍军人编号", required = false)
    private String veteranNum;

    /**
     * 原单位薪资
     */
    private BigDecimal oldSalary;
    private String checkUrl;

    @ApiModelProperty(value="原单位绩效，需要手动录入",required = true)
    private BigDecimal oldPerformance;

    /**
     * 入职日期修改状态 1.为修改了入职日期
     */
    @ApiModelProperty(value = "入职日期修改状态", required = false)
    private Integer updateEntryStatus;

    private Integer type;


    @ApiModelProperty(value="最高学历",required = false)
    private String degree;

    @ApiModelProperty(value="专业",required = false)
    private String speciality;

    @ApiModelProperty(value="oa账号",required = false)
    private String useraccount;


    private String uuid;

    @ApiModelProperty(value="原入职日期",required = false)
    private Date oldhiredate;
    @ApiModelProperty(value="转正备注")
    private String regularRemark;

    @ApiModelProperty(value="是否管培生，2：不是，1：是",required = false)
    private Integer isManagementTrainee;

    @ApiModelProperty(value="企微头像",required = false)
    private String avatar;

    @ApiModelProperty(value="参加新员工培训的时间",required = false)
    private Date trainDate;

    @ApiModelProperty(value="参加新员工培训的成绩",required = false)
    private String trainScore;

    @ApiModelProperty(value = "转正提醒 0：未提醒 1：已提醒")
    private Integer isRegularRemind;

    @ApiModelProperty(value = "转正bpm查看链接")
    private String regularCheckUrl;

    @ApiModelProperty(value = "0:待发起 ，1：已发起待审批，2：审批完成，3：作废,")
    private Integer regularBpmStatus;

    /**
     * 发薪单位id
     */
    @JsonDeserialize(using = LongJsonDeserializer.class)
    @JsonSerialize(using = LongJsonSerializer.class)
    private Long payrollUnitId;

    /**
     * 答辩分数
     */
    private String replyScore;
    /**
     * 360考评得分人数接收
     */
    private String send;

    /**
     * 360考评得分人数接收
     */
    private String receive;
    /**
     * 360评分
     */
    private String score;

    /**
     * 转正附件id
     */
    private String regularUrlIds;

    /**
     * 学位 0:博士后，1：名誉博士，2：博士，3：硕士，4：学士，5：无
     */
    private String education;

    /**
     * 档案地址
     */
    private String recordFileAddress;
//
//    /**
//     * 培训时间
//     */
//    private Date traindate;
//    /**
//     * 培训成绩
//     */
//    private String trainscore;

    /**
     * 专业类型
     */
    private String professionalType;
    /**
     * 岗位星级
     */
    private String positionStar;
    /**
     * 是否复职
     */
    private String reinstatement;
    /**
     * 档案编号
     */
    private String fileNumber;


}
